const app = require('../app/index.js');
const { REQUIRED, EXISTS } = require('../config/error.js');
const userServer = require('../server/userServer.js');
const md5password = require('../utils/md5handle.js');

// 验证用户
const verifyUser = async (ctx, next) => {
	
	/* 
    验证客户端传递的参数
    - 是否为空
    - 是否已经存在
  */

	// - 是否为空
	const { name, password } = ctx.request.body;
	if (!name || !password) {
		console.log('验证name');
		// 触发监听的error事件
		return ctx.app.emit('error' , REQUIRED , ctx);
	}

	// - 是否已经存在
	const users = await userServer.findUserByName(name);
	if (users.length) {
		return ctx.app.emit('error' , EXISTS , ctx);
	}
	// 如果都通过验证 执行下一个中间件 控制器create方法
	await next();
};


// 加密密码 中间件
const hanlPassword = async (ctx,next) => {
	const { password } = ctx.request.body;
	ctx.request.body.password = md5password(password)

	await next()
}



module.exports = {verifyUser , hanlPassword}